package com.ruoyi.sycs.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.base.domain.SyType;
import com.ruoyi.base.domain.bo.SyTypeBo;
import com.ruoyi.base.domain.vo.SyTypeVo;
import com.ruoyi.sycs.domain.BsJudgeBase;
import com.ruoyi.sycs.domain.vo.BsJudgeBaseVo;
import com.ruoyi.sycs.domain.bo.BsJudgeBaseBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 判定依据主Service接口
 *
 * @author zyb
 * @date 2024-04-08
 */
public interface IBsJudgeBaseService {

    /**
     * 查询判定依据主
     */
    BsJudgeBaseVo queryById(Long judgeId);

    /**
     * 查询判定依据主列表
     */
    TableDataInfo<BsJudgeBaseVo> queryPageList(BsJudgeBaseBo bo, PageQuery pageQuery);

    /**
     * 查询判定依据主列表
     */
    List<BsJudgeBaseVo> queryList(BsJudgeBaseBo bo);

    /**
     * 新增判定依据主
     */
    Boolean insertByBo(BsJudgeBaseBo bo);

    /**
     * 修改判定依据主
     */
    Boolean updateByBo(BsJudgeBaseBo bo);

    /**
     * 校验并批量删除判定依据主信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 根据试验类别查询明细
     * @param syType
     * @return
     */
    List<BsJudgeBase> getListBySyType(Long syType);

    /**
     * 根据试验类别获取明细分页
     * @param bo
     * @param pageQuery
     * @return
     */
    Page<BsJudgeBase> pageBySyType(BsJudgeBaseBo bo, PageQuery pageQuery);

    /**
     * 获取技术指标 树列表
     * @param type
     * @return
     */
    List<Tree<Long>> bsJudgeBaseTree(SyType type);

    /**
     * 获取技术指标 树列表 根据试验类型
     * @param type
     * @return
     */
    List<Tree<Long>> bsJudgeBaseTreeBySyType(SyTypeBo type);

    /**
     * 根据试验id获取报告列表
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<SyTypeVo> page(SyTypeBo bo, PageQuery pageQuery);
}
